package com.mmy.fta.cargo.server.service.impl;

import com.mmy.fta.cargo.api.facade.CargoService;
import com.mmy.fta.cargo.api.model.CargoInfoDTO;
import com.mmy.fta.cargo.server.entity.CargoInfoEntity;
import com.mmy.fta.cargo.server.enums.CargoStatusEnum;
import com.mmy.fta.cargo.server.mapper.CargoInfoEntityMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.dubbo.config.annotation.Service;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.Objects;

/**
 * @author guohao.xie
 * @apiNote
 * @exportable
 * @since 2021/10/25
 */
@Service
@Slf4j
public class CargoServiceImpl implements CargoService {
    @Autowired
    CargoInfoEntityMapper cargoInfoEntityMapper;


    /**
     * 根据cargoId返货货物信息
     */
    @Override
    public CargoInfoDTO queryCargoInfobyCargoId(String cargoId) {
        if (cargoId != null) {
            CargoInfoEntity cargoInfoEntity = cargoInfoEntityMapper.selectCargoInfobyCargoId(cargoId);
            log.info("根据cargoId查询货货物信息：{}",cargoInfoEntity);
            CargoInfoDTO cargoInfoDTO = new CargoInfoDTO();
            BeanUtils.copyProperties(cargoInfoEntity, cargoInfoDTO);
            return cargoInfoDTO;
        }
        return null;
    }

    /**
     * 根据cargoId修改货源状态
     * 货源状态:10发布中  20已下单  30已完成  40已下架   -1 已取消
     */
    @Override
    public int cargoStatusEdit(String cargoId,int cargoStatus) {
        int resNum=0;
        log.info("待修改货源状态的cargoId：{}，cargoStatus：{}",cargoId,cargoStatus);
        if (cargoId != null) {
            if(Objects.equals(cargoStatus, CargoStatusEnum.ORDER_PLACED.getCode())){
                resNum = cargoInfoEntityMapper.cargoStatusEdit(cargoId,cargoStatus);
            }else if(Objects.equals(cargoStatus, CargoStatusEnum.COMPLETE.getCode())){
                resNum = cargoInfoEntityMapper.cargoStatusEdit(cargoId,cargoStatus);
            }else if(Objects.equals(cargoStatus,CargoStatusEnum.DOWN.getCode())){
               resNum = cargoInfoEntityMapper.cargoStatusEdit(cargoId,cargoStatus);
            }else if(Objects.equals(cargoStatus,CargoStatusEnum.CANCELED.getCode())){
                resNum = cargoInfoEntityMapper.cargoStatusEdit(cargoId,cargoStatus);
            }else if(Objects.equals(cargoStatus,CargoStatusEnum.ANNOUNCING.getCode())){
                resNum = cargoInfoEntityMapper.cargoStatusEdit(cargoId,cargoStatus);
            }
            log.info("根据cargoId将货物下架影响行数：{}",resNum);
            return resNum;
        }
        return 0;
    }



}
